import axios from 'axios';

// 创建 axios 实例
const request = axios.create({
  baseURL: 'http://localhost:8888', // 基础请求地址
  timeout: 10000, // 请求超时时间
  withCredentials: true, // 允许跨域请求携带 cookie
});

// 请求拦截器：在请求发送之前执行
request.interceptors.request.use(
  (config) => {
    return config; // 返回修改后的请求配置
  },
  (error) => {
    return Promise.reject(error); // 请求出错时的处理
  },
);

// 响应拦截器：在接收到响应后执行
request.interceptors.response.use(
  (resp) => {
    const { data } = resp;
    // 如果响应成功，code 为 20000
    // if (data.code === 20000) {
    //   return data;
    // }
    // 如果响应的 code 表示未授权（401），跳转到登录页面
    if (data.code === 400401) {
      if (
        resp.request.responseURL.includes('/user/login') &&
        !window.location.pathname.includes('/user/login')
      ) {
        window.location.href = `/user/login?redirect=${window.location.href}`; // 未登录时，重定向到登录页面
      }
    } else if (data.code !== 20000) {
      // 其他错误处理
      throw new Error(data.msg ?? '服务端异常'); // 抛出错误信息
    }
    return data;
  },
  (error) => {
    return Promise.reject(error); // 响应出错时的处理
  },
);

export default request;
